package com.example.demo.dao;

import com.example.demo.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;


import javax.transaction.Transactional;
import java.util.List;

public interface MyJpaDao extends JpaRepository<Student,Integer> {
//    1、使用方法名关键字方式实现：查询班级ID值等于1的学生集合
    List<Student> findByClassId(int classID);
//    2、在getStuByAId方法上使用HQL实现：根据班级id查询该班级的学生集合（需要使用@Query注解）
    @Query("SELECT c FROM stu c where c.classId=?1")
    List<Student> getStuByAId(int classId);
//    3/在getStuByName方法上使用SQL实现：根据性别查询学生集合（需要使用@Query注解）
    @Query(value = "select * from stu where name=?1",nativeQuery = true)
    List<Student> getStuByName(String name);

//    4、在updateClass方法上使用HQL或SQL实现：根据学生id修改学生名称（需要使用@Transactional、@Modifying、@Query注解）
    @Transactional
    @Modifying
    @Query(value = "update stu set name =?2 where id=?1",nativeQuery = true)//SQL的写法
   int updateNameById(int id,String name);

    @Transactional
    @Modifying
    @Query("update stu c  set c.name =?2 where c.id=?1")//HQL的写法
    int updateNameByIdHql(int id,String name);

}
